/**
 * 菜单模块状态管理文件
 */

import { makeAutoObservable, observable, action } from 'mobx';

class Menu {
    constructor() {
        makeAutoObservable(this);
    }

    /**
     * 菜单列表
     */
    @observable
    menus = []

    /**
     * 设置菜单列表
     */
    @action.bound
    setMenus(payload) {
        this.menus = payload;
    }

    /**
     * 验证编码是否存在于菜单中
     * @param  {...any} codes 要验证的编码
     */
    auth(...codes) {
        return this.menus.some(c => codes.includes(c.code));
    }

    /**
     * 验证编码是否全部存在于菜单中
     * @param  {...any} codes 要验证的编码
     */
    all(...codes) {
        return codes.every(c => this.menus.some(d => d.code === c));
    }
}

export default new Menu();